/**
 * 项目管理存储模块
 * 提供当前选中项目的存储、读取功能
 */

// 项目存储键名
const PROJECT_KEY = "current_project";

// 当前项目信息类型
export type CurrentProject = {
	ref: string;
	name: string;
	region: string;
	organization_slug: string;
	status: string;
};

/**
 * 项目管理类
 */
class ProjectManager {
	/**
	 * 保存当前项目信息
	 * @param project - 项目信息
	 */
	save(project: CurrentProject): void {
		uni.setStorageSync(PROJECT_KEY, JSON.stringify(project));
	}

	/**
	 * 获取当前项目信息
	 * @returns 项目信息或 null
	 */
	get(): CurrentProject | null {
		const data = uni.getStorageSync(PROJECT_KEY) as string;
		if (data != null && data != "") {
			try {
				return JSON.parse(data) as CurrentProject;
			} catch (e: unknown) {
				return null;
			}
		}
		return null;
	}

	/**
	 * 检查是否已选择项目
	 * @returns 是否存在项目
	 */
	exists(): boolean {
		return this.get() != null;
	}

	/**
	 * 获取项目 ref
	 * @returns 项目 ref 或空字符串
	 */
	getRef(): string {
		const project = this.get();
		return project != null ? project.ref : "";
	}

	/**
	 * 获取项目名称
	 * @returns 项目名称或空字符串
	 */
	getName(): string {
		const project = this.get();
		return project != null ? project.name : "";
	}

	/**
	 * 删除当前项目
	 */
	remove(): void {
		uni.removeStorageSync(PROJECT_KEY);
	}
}

// 导出单例实例
export const projectManager = new ProjectManager();

// 默认导出
export default projectManager;
